/*
 * My solution is a simulation of the process of the multiplication.
 * Note the order of the multiplication between every digit of the multiplier and the multiplicand
 */

#include <iostream>
#include <string>

using namespace std;

bool stringMultiply(const string &str1, const string &str2, string &str3)
{
	string *strArr = new string[str2.size()];
	int i, j;
	
	for (j = str2.size() - 1; j >= 0; j--) 
	{
		int tens = 0;		
		for (i = str1.size() - 1; i >= 0; i--) 
		{					
			int product = (str2[j] - '0') * (str1[i] - '0') + tens;
			tens = product / 10;
			char units = product % 10 + '0';
			strArr[j].append(1, units);

			if (i == 0 && tens != 0) {
				units = tens + '0';
				strArr[j].append(1, units);
			}
		}
	} 	

	int tens = 0;
	for (j = 0; j < (int)(strArr[0].size() + str2.size() - 1); j++)
	{				
		char units;
		int sum = 0;
		int strArrIdx = str2.size() - 1;
		for (i = 0; i < (int)str2.size(); i++) {
			if (j >= i && j < (int)strArr[strArrIdx].size() + i) {
				sum  += (strArr[strArrIdx][j - i] - '0');
			} 
			--strArrIdx;
		}
		sum += tens;

		tens = sum / 10;
		units = sum % 10 + '0';
		str3.append(1, units);
		if (j == (strArr[0].size() + str2.size() - 2) && tens != 0)
		{
			units = tens + '0';
			str3.append(1, units);
		}
	}
	delete[] strArr;
	return true;
}

int main(int argc, char* argv[])
{
	string s;
	int n;
	while(cin>>s>>n)
	{		
		int n1 = n;
		int decimalPos = -1;
		
		int i = 0;
		for (i = 0; i < (int)s.size(); i++)
		{
			if (s[i] == '.')
			{
				decimalPos = i;
				break;
			} 
		}	
		
		if (decimalPos != -1) {
			s.erase(decimalPos, 1);
		} else {
			decimalPos = s.size();
		}
				
		string result;	
		string intermediateResult = s;
		string tempResult;
		string odd("1");
		
		string single;

		while (n > 1) {
			if (n % 2 == 1) {
				if (single.size() == 0) {
					single = intermediateResult;
				} else {
					tempResult.clear();
					stringMultiply(single, intermediateResult, tempResult);
					single = tempResult;
					tempResult.clear();
					stringMultiply(single, odd, tempResult);
					single = tempResult;
				}
			}

			n /= 2;
			tempResult.clear();
			stringMultiply(intermediateResult, intermediateResult, tempResult);
			intermediateResult = tempResult;
			tempResult.clear();
			stringMultiply(intermediateResult, odd, tempResult);
			intermediateResult = tempResult;
 		}

		if (single.size() != 0) {
			tempResult.clear();
			stringMultiply(intermediateResult, single, tempResult);
			intermediateResult = tempResult;
			tempResult.clear();
			stringMultiply(intermediateResult, odd, tempResult);
			intermediateResult = tempResult;
		}
		result.clear();
		stringMultiply(intermediateResult, odd, result);
		
		int insertIdx = (s.size() - decimalPos) * n1;
		if ((int)result.size() <= insertIdx) {
			result.insert(result.size(), insertIdx - result.size(),  '0');
			result.append(1, '.');
		} else {
			result.insert(insertIdx, 1, '.');
		}
		string copyResult = result;
		result.clear();
		
		int i1 = 0,i2 = copyResult.size() - 1;
		for (i = copyResult.size() - 1; i >= 0; i--) {
			if (copyResult[i] != '0') {
				i2 = i;
				break;
			}				
		}
		for (i = 0; i < (int)copyResult.size(); i++) {
			if (copyResult[i] != '0') {
				i1 = i;
				break;
			}
		}

		for (i = i2; i >= i1; i--) {
			result.append(1, copyResult[i]);
		}
		if (result[result.size() - 1] == '.' && result.size() != 1) {
			result.erase(result.size() - 1, 1);
		}
		
		cout<<result.c_str()<<endl;
	}
	return 0;
}

